/**
 * jQuery jfUI (checkBox复选框)
 * 
 * @author yepp(叶平平)
 * @date 2012-11-13
 * 
 * ***/
;(function($){
 	$.fn.jfCheckBox = function(options){
 		return $.jfui.run.call(this,'jfCheckBox',arguments);
 	};
 	
 	$.fn.jfGetCheckBoxManager = function(){
 		return $.jfui.run.call(this,'jfGetCheckBoxManager',arguments)
 	};
 	
 	$.jfDefaults.CheckBox = { disabled: false };
 	
 	$.jfMethos.CheckBox = {};
 	
 	$.jfui.controls.CheckBox = function (element, options){
 		$.jfui.controls.CheckBox.base.constructor.call(this, element, options);
 	};
 	
 	$.jfui.controls.CheckBox.jfExtend($.jfui.controls.Input,{
 		__getType : function(){
 			return 'CheckBox';
 		},
 		__idPrev : function(){
 			return 'CheckBox';
 		},
 		_extendMethods : function(){
 			return $.jfMethos.CheckBox;
 		},
 		_render: function(){
 		  	var g = this, p = this.options;
            g.input = $(g.element);
            g.link = $('<a class="l-checkbox"></a>');
            g.wrapper = g.input.addClass('l-hidden').wrap('<div class="l-checkbox-wrapper"></div>').parent();
            g.wrapper.prepend(g.link);
            g.link.click(function ()
            {
                if (g.input.attr('disabled')) { 
                	return false; 
                }
                if (p.disabled){
                	 return false;
                }
                if (g.trigger('beforeClick', [g.element]) == false){
                	 return false; 
                }
                if ($(this).hasClass("l-checkbox-checked")){
                    g._setValue(false);
                }else{
                    g._setValue(true);
                }
                g.input.trigger("change");
            });
            g.wrapper.hover(function(){
                if (!p.disabled){
                	 $(this).addClass("l-over");
                }   
            },function(){
                $(this).removeClass("l-over");
            });
            this.set(p);
            this.updateStyle();
 		},
 		_setCss: function (value){
            this.wrapper.css(value);
        },
        _setValue: function (value){
            var g = this, p = this.options;
            if (!value){
                g.input[0].checked = false;
                g.link.removeClass('l-checkbox-checked');
            }else{
                g.input[0].checked = true;
                g.link.addClass('l-checkbox-checked');
            }
        },
        _setDisabled: function (value)
        {
            if (value){
                this.input.attr('disabled', true);
                this.wrapper.addClass("l-disabled");
            }else{
                this.input.attr('disabled', false);
                this.wrapper.removeClass("l-disabled");
            }
        },
        _getValue: function ()
        {
            return this.element.checked;
        },
        updateStyle: function ()
        {
            if (this.input.attr('disabled')){
                this.wrapper.addClass("l-disabled");
                this.options.disabled = true;
            }
            if (this.input[0].checked){
                this.link.addClass('l-checkbox-checked');
            }else{
                this.link.removeClass('l-checkbox-checked');
            }
        }
 	});
 })(jQuery);